Package com.l2fprod.gui.plaf.skin

Source Code of com.l2fprod.gui.plaf.skin.SkinUtils

/* ====================================================================
*
* Skin Look And Feel 6.7 License.
*
* Copyright (c) 2000-2006 L2FProd.com.  All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
*    notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
*    notice, this list of conditions and the following disclaimer in
*    the documentation and/or other materials provided with the
*    distribution.
*
* 3. The end-user documentation included with the redistribution, if
*    any, must include the following acknowlegement:
*       "This product includes software developed by L2FProd.com
*        (http://www.L2FProd.com/)."
*    Alternately, this acknowlegement may appear in the software itself,
*    if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "Skin Look And Feel", "SkinLF" and "L2FProd.com" must not
*    be used to endorse or promote products derived from this software
*    without prior written permission. For written permission, please
*    contact info@L2FProd.com.
*
* 5. Products derived from this software may not be called "SkinLF"
*    nor may "SkinLF" appear in their names without prior written
*    permission of L2FProd.com.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED.  IN NO EVENT SHALL L2FPROD.COM OR ITS CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*/
package com.l2fprod.gui.plaf.skin;

import com.l2fprod.util.ImageUtils;

import java.awt.Font;
import java.awt.Image;
import java.awt.Insets;
import java.awt.Toolkit;
import java.io.File;
import java.net.URL;
import java.util.Enumeration;
import java.util.StringTokenizer;

import javax.swing.UIDefaults;
import javax.swing.UIManager;
import javax.swing.plaf.FontUIResource;

/**
* @author    $Author: l2fprod $
* @created   27 avril 2002
* @version   $Revision: 1.6 $, $Date: 2004/05/22 15:12:33 $
*/
public final class SkinUtils {

  /**
   * Description of the Field
   */
  public final static boolean DEBUG =
    "true".equals(com.l2fprod.util.AccessUtils.getProperty("debug.skinlf"));

  /*
   *  Font f = null;
   *  Font[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();
   *  for (int i = 0, c = fonts.length; i < c; i++) {
   *  if (fonts[i].getFontName().equals(name)) {
   *  f = fonts[i].deriveFont(type, size);
   *  break;
   *  }
   *  }
   *  return f;
   *  }
   */
  /**
   * Sets the Font attribute of the SkinUtils class
   *
   * @param f  The new Font value
   */
  public static void setFont(Font f) {
    UIDefaults defs = UIManager.getDefaults();
    for (Enumeration keys = defs.keys(); keys.hasMoreElements();) {
      Object o = keys.nextElement();
      if (o instanceof String) {
        String aKey = (String) o;
        if (aKey.endsWith(".font")
            || aKey.endsWith(".titleFont")
            || aKey.endsWith(".acceleratorFont")) {
          if (defs.get(aKey) instanceof FontUIResource) {
            UIManager.put(aKey, f);
          }
        }
      }
    }
  }

  /**
   * Gets the Font attribute of the SkinUtils class
   *
   * @param name  Description of Parameter
   * @param type  Description of Parameter
   * @param size  Description of Parameter
   * @return      The Font value
   */
  public static Font getFont(String name, int type, int size) {
    return new Font(name, type, size);
  }

  /**
   * Description of the Method
   *
   * @param filename       Description of Parameter
   * @return               Description of the Returned Value
   * @exception Exception  Description of Exception
   */
  public static Image loadImage(String filename) throws Exception {
    return loadImage(toURL(new File(filename)));
  }

  /**
   * Description of the Method
   *
   * @param url            Description of Parameter
   * @return               Description of the Returned Value
   * @exception Exception  Description of Exception
   */
  public static Image loadImage(URL url) throws Exception {
    Image img = null;
    byte[] imageByte = SkinLookAndFeel.getURLContent(url);
    img = Toolkit.getDefaultToolkit().
      createImage(imageByte, 0, imageByte.length);

    CustomImageObserver custom = new CustomImageObserver();
    Object lock = custom.getLock();

    synchronized (lock) {
      int width = img.getWidth(custom);
      int height = img.getHeight(custom);
      if (height < 1 && width < 1)
        lock.wait();
    }

    return ImageUtils.transparent(img);
  }

  /**
   * Description of the Method
   *
   * @param f                                   Description of Parameter
   * @return                                    Description of the Returned
   *      Value
   * @exception java.net.MalformedURLException  Description of Exception
   */
  public static URL toURL(File f) throws java.net.MalformedURLException {
    String path = f.getAbsolutePath();
    if (File.separatorChar != '/') {
      path = path.replace(File.separatorChar, '/');
    }
    if (!path.startsWith("/")) {
      path = "/" + path;
    }
    if (!path.endsWith("/") && f.isDirectory()) {
      path = path + "/";
    }
    return new URL("file", "", path);
  }

  // color is R,G,B
  // supported format of the string are
  // { r, g, b }
  // r g b
  // r,g,b
  // r.r, g.g, b.b
  /**
   * Description of the Method
   *
   * @param color  Description of Parameter
   * @return       Description of the Returned Value
   */
  public static String decodeColor(String color) {
    if (color.startsWith("#")) {
      return color;
    }
    java.util.StringTokenizer token =
      new java.util.StringTokenizer(color, ", {}");
    String result = "#";
    String r = token.nextToken();
    String g = token.nextToken();
    String b = token.nextToken();
    if (is0to1color(r) && is0to1color(g) && is0to1color(b)) {
      r = (int) (Float.parseFloat(r) * 255) + "";
      g = (int) (Float.parseFloat(g) * 255) + "";
      b = (int) (Float.parseFloat(b) * 255) + "";
    } else {
      r = (int) Float.parseFloat(r) + "";
      g = (int) Float.parseFloat(g) + "";
      b = (int) Float.parseFloat(b) + "";
    }
    result += toHexString(Integer.parseInt(r));
    result += toHexString(Integer.parseInt(g));
    result += toHexString(Integer.parseInt(b));
    return result;
  }

  /**
   * Description of the Method
   *
   * @param composite  Description of Parameter
   * @return           Description of the Returned Value
   */
  static boolean is0to1color(String composite) {
    int index = composite.indexOf(".");
    if (index != -1 && composite.substring(0, index).length() <= 1) {
      return true;
    } else {
      return false;
    }
  }

  /**
   * Description of the Method
   *
   * @param i  Description of Parameter
   * @return   Description of the Returned Value
   */
  static String toHexString(int i) {
    if (i == 0) {
      return "00";
    } else {
      return Integer.toHexString(i).toUpperCase();
    }
  }

  /**
   * Convert strings like 12, 12, 54, 45 to an insets
   * where values are LEFT, RIGHT, TOP, BOTTOM
   */
  public static Insets stringToInsets(String border) {
    StringTokenizer token = new StringTokenizer(border, ",");
    int left = Integer.parseInt(token.nextToken().trim());
    int right = Integer.parseInt(token.nextToken().trim());
    int top = Integer.parseInt(token.nextToken().trim());
    int bottom = Integer.parseInt(token.nextToken().trim());
    return new Insets(top, left, bottom, right);
  }

}
TOP

Related Classes of com.l2fprod.gui.plaf.skin.SkinUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.